ffmpeg专辑(三):linux编译ffmpeg.so多架构编译

您所在的位置:网站首页 ndk 编译 ffmpeg ffmpeg专辑(三):linux编译ffmpeg.so多架构编译

ffmpeg专辑(三):linux编译ffmpeg.so多架构编译

2023-07-20 20:34| 来源: 网络整理| 查看: 265

前言:在前两章已经介绍了,如何进行编译ffmpeg.so的一个完整过程。但是都是基于一个架构编译的,本文介绍一个sh脚本同时编译出双架构的方法,使编译过程更加方便和高效。

目前android端常用的架构有两个:

arm64-v8a:包含32位和64位执行状态

armeabi-v7a:只包含32位执行状态。

ffmpeg专辑(一):linux编译ffmpeg.so入门

ffmpeg专辑(二):linux编译ffmpeg.so脚本改良与裁编

ffmpeg专辑(三):linux编译ffmpeg.so多架构编译

ffmpeg专辑(四):linux编译ffmpeg.so合并so篇

一、编写脚本

在前几篇文章中的ffmpeg-4.2.2源码目录下新建一个编译脚本:build_android_v8v7.sh:

#!/bin/bash make clean #变量定义,变量前面的export可要可不要,如export API API=21 NDK=/home/liuzihui/softwaresCus/ndkr21/android-ndk-r21e TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/linux-x86_64 SYSROOT=$TOOLCHAIN/sysroot ADDITIONAL_CONFIGURE_FLAG="--enable-avdevice --enable-avcodec --enable-avformat --enable-swresample --enable-swscale --enable-postproc --enable-avfilter" function build_android { echo "===========================1========================" ./configure \ --prefix=$OUTPUT \ --target-os=android \ --arch=$ARCH \ --cpu=$CPU \ --enable-asm \ --enable-neon \ --enable-cross-compile \ --enable-shared \ --disable-static \ --disable-doc \ --disable-ffplay \ --disable-ffprobe \ --disable-symver \ --disable-ffmpeg \ --sysroot=$SYSROOT \ --cross-prefix=$CROSS_PREFIX \ --cc=$CC \ --cxx=$CXX \ --extra-cflags="-fPIC" \ $ADDITIONAL_CONFIGURE_FLAG echo "===========================2=====================" make clean echo "=============================${CC}===============" make -j4 make install } #arm64-v8a ARCH=arm64 CPU=armv8-a OUTPUT=/home/liuzihui/softwaresCus/ffmpegSource/ffmpeg-4.2.2/android/$CPU CROSS_PREFIX=$TOOLCHAIN/bin/aarch64-linux-android- #AR AS LD等通用 CC=$TOOLCHAIN/bin/aarch64-linux-android$API-clang #CC单独指定,非通用(因为ndk中CC与AR路径不同,后同理) CXX=$TOOLCHAIN/bin/aarch64-linux-android$API-clang++ #CXX单独指定,非通用 build_android #armeabi-v7a ARCH=arm CPU=armv7-a OUTPUT=/home/liuzihui/softwaresCus/ffmpegSource/ffmpeg-4.2.2/android/$CPU CROSS_PREFIX=$TOOLCHAIN/bin/arm-linux-androideabi- #AR AS LD等通用 CC=$TOOLCHAIN/bin/armv7a-linux-androideabi$API-clang #CC单独指定,非通用 CXX=$TOOLCHAIN/bin/armv7a-linux-androideabi$API-clang++ #CXX单独指定,非通用 build_android

二、执行脚本

在前几篇文章中的ffmpeg-4.2.2源码目录下,终端命令:赋予脚本权限和执行脚本:

chmod +x build_android_v8v7.sh ./build_android_v8v7.sh

等待几分钟,然后会在ffmpeg-4.2.2源码目录下自动生成android目录和里面的内容:

 后记:本次编译没有使用so的裁剪(上一篇已经讲过),使用生成默认的全量包(即生成了7个so)的方式编译的,后面的文章将讲述如何合并这7个so文件。

注意:若想自行裁剪,可以参照上一章介绍,修改本次脚本中的自定义变量 ADDITIONAL_CONFIGURE_FLAG 里面的一些enable和disable属性进行功能模块的配置。

好了,本次专辑(三)就讲到这里了,更多内容,请期待下次的讲述

欢迎有问题的伙伴及时留意讨论,有不足之处还望指正

祝大家生活工作愉快~



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3